6 #ifndef _CFEXPCOMMON_H_ 7 #define _CFEXPCOMMON_H_ 23 #include <unordered_map> 36 #include <type_traits> 45 #include <condition_variable> 51 #define FEXPCOMMON_CONSOLE_OUT std::cout 54 #define FEXPCOMMON_CONSOLE_SAFE_THREAD_OUT CFEXPSafeConcurencyConsolePrint{ } 55 #define FEXPCOMMON_CONSOLE_PAUSE(manager) if(!manager) system("PAUSE") 61 #define FEXPCOMMON_CMD_EXE_PATH_INDEX 0 62 #define FEXPCOMMON_CMD_MANAGER_INDEX 1 63 #define FEXPCOMMON_CMD_SERVER_IP_INDEX 2 64 #define FEXPCOMMON_CMD_SERVER_PORT_INDEX 3 65 #define FEXPCOMMON_CMD_MAX_LENGTH 4 66 #define FEXPCOMMON_CMD_MIN_LENGTH 2 75 #define FEXPCOMMON_WIN_VISTA NTDDI_VISTA 76 #define FEXPCOMMON_WIN_7 NTDDI_WIN7 77 #define FEXPCOMMON_WIN_8 NTDDI_WIN8 78 #define FEXPCOMMON_WIN_10 NTDDI_WIN8 // Win 10 and 8 compatible 80 #define FEXPCOMMON_MY_WIN_VERSION_FOR_COMPILATION FEXPCOMMON_WIN_7 // development version of windows 126 #define STRUCT_KEYS(fstrct, eidntfier) fstrct[(eidntfier)] 128 #define LAZY_ALLC(alloclass, baseclass) []()->Ptr<baseclass> { return CFEXPDataManager<alloclass>::SafeAllocInstance(); } 130 #define CLS_KEY(alloclass) alloclass::ID 132 #define CLS_MAP_PAIR(fstrct, alloclass, baseclass) { STRUCT_KEYS(fstrct, CLS_KEY(alloclass)), LAZY_ALLC(alloclass, baseclass) } 137 #define FEXPCOMMON_STACAST(clsfrom, clsto, variable) Ptr<clsfrom>::SafeSmartPtrStatCast<clsto>(variable) 138 #define FEXPCOMMON_DYNCAST(clsfrom, clsto, variable) Ptr<clsfrom>::SafeSmartPtrDnmcCast<clsto>(variable) 143 #define FEXPCOMMON_EXCEPTION(error_text) throw std::runtime_error(error_text) 144 #define FEXPCOMMON_NOT_IMPLEMENTED_EX FEXPCOMMON_EXCEPTION("Not implemented!!!") 149 #undef min // disconnect min from stdlib header 150 #undef max // disconnect max from stdlib header 151 #define FEXPCOMMON_MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) 152 #define FEXPCOMMON_MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) 153 #define FEXPCOMMON_FOREACH(start, end, index) for(index = (start); index <= (end); ++index) 154 #define FEXPCOMMON_FOREACH_REV(start, end, index) for(index = (start); index >= (end); --index) 155 #define IT current_item_for_each 156 #define FEXPCOMMON_FOREACH_ITER(data) for (auto IT = (data).begin(); IT != (data).end(); ++IT) 157 #define FEXPCOMMON_FOREACH_ITER_FNC(data, lambda_body) std::for_each((data).begin(), (data).end(), [&](auto IT) lambda_body) 162 #define FEXPCOMMON_BUFFER_LINE_LEN 1024 // maximal length of string buffer 163 #define FEXPCOMMON_MIN_VALUE 1.0E-6 // minimum value 164 #define FEXPCOMMON_FLT_PRECISION 1.0E-7 // precision of float 165 #define FEXPCOMMON_FLT_PRECISION_DIGITS 7 // precision of float 166 #define FEXPCOMMON_FLT_MAX (std::numeric_limits<float>::max() / 2.0) // max value of float (only half of it) 167 #define FEXPCOMMON_DBL_PRECISION 1.0E-15 // precision of double 168 #define FEXPCOMMON_DBL_PRECISION_DIGITS 15 // precision of double 169 #define FEXPCOMMON_DBL_MAX (std::numeric_limits<double>::max() / 2.0) // max value of double (only half of it) 170 #define FEXPCOMMON_INVALID_INDX -1 // invalid index value 171 #define FEXPCOMMON_DEFAULT_INDX 0 // default index value 172 #define FEXPCOMMON_PI 3.14159265358979323846 173 #define FEXPCOMMON_NO_VALUE_STR "No value" 176 #define FEXPCOMMON_MAXFLDS 10 // maximum possible number of fields 177 #define FEXPCOMMON_MAXFLDSIZE 32 // longest possible field + 1 = 31 byte field 178 #define FEXPCOMMON_EMPTY 0 // default length 179 #define FEXPCOMMON_DEFAULT_VALUE 0 180 #define FEXPCOMMON_DELIMITER ";" // input file item row delimiter 181 #define FEXPCOMMON_KEY_BLOCK_IDNTF "#" 182 #define FEXPCOMMON_KEY_TABLE_IDNTF "$" 183 #define FEXPCOMMON_EMPTY_STRING "" 184 #define FEXPCOMMON_EMCHR_STRING " " 185 #define FEXPCOMMON_NEW_LINE "\n" 186 #define FEXPCOMMON_QUEST_MARK_CHAR '?' 187 #define FEXPCOMMON_ZERO_END_CHAR '\0' 188 #define FEXPCOMMON_ZERO_END_WCHAR L'\0' 189 #define FEXPCOMMON_DFLT_TXT (std::string("@FEXP") + FEXPCOMMON_DELIMITER) 192 #define FEXPCOMMON_DATA_TYPE(type) std::type_index(typeid(type)) 193 #define FEXPCOMMON_DATA_TYPE_NAME(type) FEXPCOMMON_DATA_TYPE(type).name() 195 #define FEXPCOMMON_CLCFLT_TYPE FEXPCOMMON_DATA_TYPE(t_fexpcommon_ct) 196 #define FEXPCOMMON_SIZE_T_TYPE FEXPCOMMON_DATA_TYPE(size_t ) 197 #define FEXPCOMMON_STRING_TYPE FEXPCOMMON_DATA_TYPE(std::string ) 199 #define FEXPCOMMON_CLCFLT_TYPE_NAME FEXPCOMMON_DATA_TYPE_NAME(t_fexpcommon_ct) 200 #define FEXPCOMMON_SIZE_T_TYPE_NAME FEXPCOMMON_DATA_TYPE_NAME(size_t ) 201 #define FEXPCOMMON_STRING_TYPE_NAME FEXPCOMMON_DATA_TYPE_NAME(std::string ) 205 #define GET_MAX_FLT_VAL(type) \ 206 ((FEXPCOMMON_DATA_TYPE_NAME(type) == FEXPCOMMON_DATA_TYPE_NAME(float)) ?\ 207 FEXPCOMMON_FLT_MAX : FEXPCOMMON_DBL_MAX) 209 #define GET_MIN_FLT_VAL(type) \ 210 ((FEXPCOMMON_DATA_TYPE_NAME(type) == FEXPCOMMON_DATA_TYPE_NAME(float)) ?\ 211 FEXPCOMMON_FLT_PRECISION : FEXPCOMMON_DBL_PRECISION) 214 #define GET_FLT_PRECIS_DIGIT(type) \ 215 ((FEXPCOMMON_DATA_TYPE_NAME(type) == FEXPCOMMON_DATA_TYPE_NAME(float)) ?\ 216 FEXPCOMMON_FLT_PRECISION_DIGITS : FEXPCOMMON_DBL_PRECISION_DIGITS) 219 #define GET_MAX_SIZE_T_VAL() std::numeric_limits<size_t>::max() 227 template <
typename TFunc>
229 : std::integral_constant<bool,
230 std::is_pointer<TFunc>::value &&
231 std::is_function<typename std::remove_pointer<TFunc>::type>::value>{ };
234 template <
typename TClassType>
239 template <
typename TClassType,
typename TReturnType,
typename... Args>
243 typedef std::function<TReturnType(Args...)>
f_type;
247 template <
typename TClassType,
typename TReturnType,
typename... Args>
250 typedef std::function<TReturnType(Args...)>
f_type;
254 template <
typename TReturnType,
typename... Args>
257 typedef std::function<TReturnType(Args...)>
f_type;
260 template <
typename TLambda>
275 template<
typename TType>
288 template<
typename TTo>
290 template<
typename TTo>
307 template<
typename TType>
313 template<
typename TType>
315 : std::shared_ptr<TType>(source), _arr_length(arr_length) { }
319 template<
typename TType>
323 std::shared_ptr<TType>::operator=(source);
324 _arr_length = source._arr_length;
329 template<
typename TType>
template<
typename TTo>
334 std::static_pointer_cast<TTo>(from) :
339 template<
typename TType>
template<
typename TTo>
344 std::dynamic_pointer_cast<TTo>(from) :
349 template<
typename TType>
359 template<
typename TType>
370 template<
typename TType>
374 template<
typename ...VarArgs>
391 template<
typename TType>
template<
typename ...VarArgs>
395 return std::make_shared<TType>(std::forward<VarArgs>(inpar)...);
399 template<
typename TType>
403 return Ptr<TType>(std::shared_ptr<TType>(alloc));
409 template<
typename TType>
413 return Ptr<TType>(std::shared_ptr<TType>(
new TType[length],
414 std::default_delete<TType[]>()), length);
418 template<
typename TType>
422 return Ptr<TType>(std::shared_ptr<TType>(alloc), length);
433 template<
typename TData,
typename TKey>
443 virtual TKey
GetKey () = 0;
453 template<
typename TData,
typename TKey>
459 template<
typename TData,
typename TKey>
461 : _data(source._data) { }
471 #define MAP_PAIR(key, itm) std::make_pair(key, itm) 474 template<
typename TWrapper,
typename TData,
typename TKey,
typename Enable =
void>
478 template<
typename TWrapper,
typename TData,
typename TKey>
481 <TWrapper, TData, TKey,
482 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
491 template<
typename TDataSpec>
492 typename std::enable_if<std::is_base_of<TData, TDataSpec>::value,
Ptr<TDataSpec>>::type
497 bool Contains(
const TKey & key);
498 bool Remove (
const TKey & key);
504 virtual std::string GetContainerName()
const = 0;
506 std::map<TKey, Ptr<TWrapper>> & get_container();
508 std::map<TKey, Ptr<TWrapper>> _container;
514 template<
typename TWrapper,
typename TData,
typename TKey>
516 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
521 template<
typename TWrapper,
typename TData,
typename TKey>
523 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
524 ::~ICFEXPDataContainerBase()
531 template<
typename TWrapper,
typename TData,
typename TKey>
533 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
534 ::Contains(
const TKey & key)
537 return bool(get_container().count(key));
541 template<
typename TWrapper,
typename TData,
typename TKey>
543 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
544 ::Remove(
const TKey & key)
549 get_container().erase(get_container().find(key));
554 template<
typename TWrapper,
typename TData,
typename TKey>
556 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
564 template<
typename TWrapper,
typename TData,
typename TKey>
566 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
574 auto key = item->GetKey();
580 get_container().insert(
MAP_PAIR(key, item));
585 template<
typename TWrapper,
typename TData,
typename TKey>
template<
typename TDataSpec>
586 typename std::enable_if<std::is_base_of<TData, TDataSpec>::value,
Ptr<TDataSpec>>::type
588 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
595 auto ptr = (*IT).second->GetData();
605 template<
typename TWrapper,
typename TData,
typename TKey>
607 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
608 ::GetData(
const TKey & key)
611 auto data = GetWrappedData(key);
616 template<
typename TWrapper,
typename TData,
typename TKey>
618 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
619 ::GetWrappedData(
const TKey & key)
622 return Contains(key) ? get_container()[key] :
Ptr<TWrapper>();
626 template<
typename TWrapper,
typename TData,
typename TKey>
628 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
632 get_container().clear();
636 template<
typename TWrapper,
typename TData,
typename TKey>
638 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
642 return get_container().size();
646 template<
typename TWrapper,
typename TData,
typename TKey>
648 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
652 return get_container().empty();
656 template<
typename TWrapper,
typename TData,
typename TKey>
658 typename std::enable_if<std::is_base_of<ICFEXPDataWrapperBase<TData, TKey>, TWrapper>::value>::type>
673 template <
typename TValue>
682 virtual void SetValue(
size_t index, TValue value) = 0;
683 virtual TValue
GetValue(
size_t index) = 0;
702 template <
typename TValue>
711 virtual void SetValue(
size_t index, TValue value)
override { _buffer.get()[index] = value; };
712 virtual TValue
GetValue(
size_t index)
override {
return _buffer.get()[index]; };
723 template <
typename TValue>
726 _buffer(
CFEXPDataManager<TValue>::SafeAllocInstanceArray(GetBufferLength()))
744 template <
typename TValue>
753 virtual void SetValue(
size_t index, TValue value)
override { _buffer->at(index) = value; };
754 virtual TValue
GetValue(
size_t index)
override {
return _buffer->at(index); };
765 template <
typename TValue>
768 _buffer(
CFEXPDataManager<std::vector<TValue>>::SafeAllocInstance(GetBufferLength()))
786 template <
typename TValue>
795 virtual void SetValue(
size_t index, TValue value)
override;
796 virtual TValue
GetValue(
size_t index)
override;
808 template <
typename TValue>
811 _buffer(
CFEXPDataManager<std::map<size_t, TValue>>::SafeAllocInstance()) { }
815 template <
typename TValue>
819 if (index >= _length)
821 _buffer->at(index) = value;
825 template <
typename TValue>
830 if (!_buffer->count(index))
831 return _default_value(index);
832 return _buffer->at(index);
842 template<
template<
typename>
typename TBuffer,
typename TValue,
typename Enable =
void>
846 template<
template<
typename>
typename TBuffer,
typename TValue>
849 <TBuffer, TValue, typename std::enable_if<std::is_base_of<ICFEXPMatrixBufferBase<TValue>, TBuffer<TValue>>::value>::type>
852 CFEXPMatrixBase(
size_t length, std::function<TValue(
size_t)> default_val);
855 bool SetValue(
size_t index, TValue value);
856 TValue GetValue(
size_t index);
859 virtual std::string Serialize () = 0;
860 virtual void Deserialize(
const std::string & data) = 0;
870 template<
template<
typename>
typename TBuffer,
typename TValue>
873 : _buffer(
CFEXPDataManager<TBuffer<TValue>>::SafeAllocInstance(length, default_val)) { }
877 template<
template<
typename>
typename TBuffer,
typename TValue>
879 ::SetValue(
size_t index, TValue value)
882 #define MATRIX_ERROR_SET "Error: Matrix is not initialized: \"Set Action\"!!!" 883 if (!_buffer || !_buffer->IsBufferReady())
887 if (index >= _buffer->GetBufferLength())
890 _buffer->SetValue(index, value);
895 template<
template<
typename>
typename TBuffer,
typename TValue>
897 ::GetValue(
size_t index)
900 #define MATRIX_ERROR_GET "Error: Matrix is not initialized: \"Get Action\"!!!" 901 if (!_buffer || !_buffer->IsBufferReady())
904 return _buffer->GetValue(index);
915 template <
typename TValue>
923 bool SetValue (
size_t row,
size_t col, TValue value);
924 TValue
GetValue (
size_t row,
size_t col);
926 bool SetValueT(
size_t row,
size_t col, TValue value);
927 TValue
GetValueT(
size_t row,
size_t col);
937 size_t get_array_length(
size_t rows,
size_t cols)
const;
938 size_t get_array_index (
size_t row ,
size_t col )
const;
944 template <
typename TValue>
950 template <
typename TValue>
958 template <
typename TValue>
965 template <
typename TValue>
970 return SetValue(col, row, value);
973 template <
typename TValue>
978 return GetValue(col, row);
982 template <
typename TValue>
990 template <
typename TValue>
994 return row * _cols + col;
1015 virtual std::string
Serialize ()
override;
1016 virtual void Deserialize(
const std::string & data)
override;
1034 static std::vector<std::string>
SplitString(
const std::string & str,
const std::string & delim);
1035 template<
typename TValue>
1036 typename std::enable_if<std::is_arithmetic<TValue>::value, TValue>::type
1041 template<
typename TValue>
1042 typename std::enable_if<std::is_arithmetic<TValue>::value, std::string>::type
1044 template<
typename TValue>
1045 typename std::enable_if<std::is_floating_point<TValue>::value,
int>::type
1056 template<
typename TValue>
1057 typename std::enable_if<std::is_arithmetic<TValue>::value, TValue>::type
1064 std::stringstream stream(strnum);
1070 catch (
const std::exception&)
1077 template<
typename TValue>
1078 typename std::enable_if<std::is_arithmetic<TValue>::value, std::string>::type
1082 std::ostringstream stream;
1086 stream << std::scientific << value;
1090 return stream.str();
1093 #define FEXPCOMMON_COMPARE_EQ 0 1094 #define FEXPCOMMON_COMPARE_1V 1 1095 #define FEXPCOMMON_COMPARE_2V 2 1097 template<
typename TValue>
1098 typename std::enable_if<std::is_floating_point<TValue>::value,
int>::type
1104 if (abs(value2 - value1) <= eps)
1106 else if (value1 > value2)
1108 else if (value1 < value2)
1133 template<
typename TValue>
1138 TValue
GetValue(
const std::string & text) {
return CFEXPBaseConvers::StringToNumber<TValue>(text); }
1151 std::string
GetValue(
const std::string & text) {
return text; };
1165 :
public std::ostringstream
1173 static std::mutex _mtx_print;
1184 static void WriteLine(std::string line);
1204 std::string
GetConfigPath(std::string fname) noexcept(
false);
1211 std::tuple<std::string, size_t, std::string, size_t>
1219 void TRACE(
const char* format, ...);
1221 #endif // !_CFEXPCOMMON_H_ Definition: FEXPCommon.h:92
Definition: FEXPCommon.h:101
#define FEXPCOMMON_EMPTY
Definition: FEXPCommon.h:178
#define FEXPCOMMON_CLCFLT_TYPE_NAME
Definition: FEXPCommon.h:199
std::function< TReturnType(Args...)> f_type
Definition: FEXPCommon.h:243
#define FEXPCOMMON_QUEST_MARK_CHAR
Definition: FEXPCommon.h:186
General 2D matrix based on std::vector.
Definition: FEXPCommon.h:916
std::tuple< std::string, size_t, std::string, size_t > GetCmdContent(int argc, char *argv[]) noexcept(false)
Definition: FEXPCommon.cpp:199
#define GET_MIN_FLT_VAL(type)
Definition: FEXPCommon.h:209
Definition: FEXPCommon.h:1164
bool SetValue(size_t row, size_t col, TValue value)
Definition: FEXPCommon.h:951
virtual std::string Serialize() override
Definition: FEXPCommon.cpp:8
#define FEXPCOMMON_DATA_TYPE_NAME(type)
Definition: FEXPCommon.h:193
ICFEXPMatrixBufferBase(size_t length, std::function< TValue(size_t)> default_val)
Definition: FEXPCommon.h:677
CFEXPMatrix2D(size_t rows, size_t cols)
Definition: FEXPCommon.h:1009
Matrix memory based on std::vector.
Definition: FEXPCommon.h:745
static Ptr< TType > MakeAllocInstanceArraySafe(TType *alloc, size_t length)
Definition: FEXPCommon.h:419
CFEXPGeneralMatrix2DVect(size_t rows, size_t cols, std::function< TValue(size_t)> default_val)
Definition: FEXPCommon.h:945
static std::enable_if< std::is_arithmetic< TValue >::value, TValue >::type StringToNumber(const std::string &strnum)
Definition: FEXPCommon.h:1058
2D matrix for floating point data.
Definition: FEXPCommon.h:1005
#define FEXPCOMMON_FOREACH(start, end, index)
Definition: FEXPCommon.h:153
virtual void SetValue(size_t index, TValue value) override
Definition: FEXPCommon.h:753
std::function< TReturnType(Args...)> f_type
Definition: FEXPCommon.h:250
Definition: FEXPCommon.h:228
ICFEXPDataWrapperBase(Ptr< TData > &data)
Definition: FEXPCommon.h:454
Matrix memory based on std::map.
Definition: FEXPCommon.h:787
static CFEXPSmartPointer< TTo > SafeSmartPtrDnmcCast(const CFEXPSmartPointer< TType > &from)
Definition: FEXPCommon.h:340
#define FEXPCOMMON_STACAST(clsfrom, clsto, variable)
Definition: FEXPCommon.h:137
#define GET_FLT_PRECIS_DIGIT(type)
Definition: FEXPCommon.h:214
static Ptr< TType > MakeAllocInstanceSafe(TType *alloc)
Definition: FEXPCommon.h:400
Definition: FEXPCommon.h:96
Definition: FEXPCommon.h:108
Base interface for matrixe memory.
Definition: FEXPCommon.h:674
virtual ~CFEXPMatrixBufferStdVector()
Definition: FEXPCommon.h:750
static std::string & StrTrim(std::string &str)
Definition: FEXPCommon.cpp:119
Matrix memory based on a simple array.
Definition: FEXPCommon.h:703
std::function< TValue(size_t)> _default_value
Definition: FEXPCommon.h:689
virtual ~ICFEXPMatrixBufferBase()
Definition: FEXPCommon.h:679
virtual ~CFEXPGeneralMatrix2DVect()
Definition: FEXPCommon.h:921
virtual void SetValue(size_t index, TValue value)=0
CFEXPSmartPointer()
Definition: FEXPCommon.h:279
Definition: FEXPCommon.h:276
virtual TValue GetValue(size_t index) override
Definition: FEXPCommon.h:826
double t_fexpcommon_ct
Definition: FEXPCommon.h:120
size_t GetBufferLength()
Definition: FEXPCommon.h:686
Definition: FEXPCommon.h:110
CFEXPSmartPointer< TType > MakeClone() const
Definition: FEXPCommon.h:350
virtual void SetValue(size_t index, TValue value) override
Definition: FEXPCommon.h:711
virtual bool IsBufferReady() override
Definition: FEXPCommon.h:755
CFEXPMatrixBufferStdVector(size_t length, std::function< TValue(size_t)> default_val)
Definition: FEXPCommon.h:766
#define FEXPCOMMON_COMPARE_1V
Definition: FEXPCommon.h:1094
CFEXPMatrixBufferArray(size_t length, std::function< TValue(size_t)> default_val)
Definition: FEXPCommon.h:724
TValue GetValueT(size_t row, size_t col)
Definition: FEXPCommon.h:975
virtual TValue GetValue(size_t index)=0
virtual ~CFEXPDataManager()
Definition: FEXPCommon.h:379
bool SetValueT(size_t row, size_t col, TValue value)
Definition: FEXPCommon.h:967
static std::string WCharToStringASCII(const wchar_t *toconvert, const char vicchar=FEXPCOMMON_QUEST_MARK_CHAR, std::locale &local=std::locale())
Definition: FEXPCommon.cpp:51
#define FEXPCOMMON_DEFAULT_INDX
Definition: FEXPCommon.h:171
size_t GetCols() const
Definition: FEXPCommon.h:931
static CFEXPSmartPointer< TTo > SafeSmartPtrStatCast(const CFEXPSmartPointer< TType > &from)
Definition: FEXPCommon.h:330
std::string GetConfigPath(std::string fname) noexcept(false)
Definition: FEXPCommon.cpp:181
Definition: FEXPCommon.h:100
size_t GetRows() const
Definition: FEXPCommon.h:930
Ptr< TData > _data
Definition: FEXPCommon.h:445
Definition: FEXPCommon.h:1118
virtual ~CFEXPSafeConcurencyConsolePrint()
Definition: FEXPCommon.cpp:134
Definition: FEXPCommon.h:98
static std::enable_if< std::is_arithmetic< TValue >::value, std::string >::type NumberToString(TValue value)
Definition: FEXPCommon.h:1079
virtual ~CFEXPMatrixBase()
Definition: FEXPCommon.h:853
Definition: FEXPCommon.h:843
virtual TValue GetValue(size_t index) override
Definition: FEXPCommon.h:712
virtual ~CFEXPMatrixBufferArray()
Definition: FEXPCommon.h:708
#define FEXPCOMMON_EXCEPTION(error_text)
Definition: FEXPCommon.h:143
virtual TValue GetValue(size_t index) override
Definition: FEXPCommon.h:754
std::string GetValue(const std::string &text)
Definition: FEXPCommon.h:1151
function_traits< TLambda >::f_type make_function(TLambda value)
Definition: FEXPCommon.h:261
CFEXPSmartPointer< TType > & operator=(const CFEXPSmartPointer< TType > &source)
Definition: FEXPCommon.h:320
virtual ~CFEXPMatrixBufferStdMap()
Definition: FEXPCommon.h:792
virtual void Deserialize(const std::string &data) override
Definition: FEXPCommon.cpp:31
#define FEXPCOMMON_COMPARE_EQ
Definition: FEXPCommon.h:1093
virtual ~CFEXPSmartPointer()
Definition: FEXPCommon.h:282
EFEXPFiniteElementType
Type of FE.
Definition: FEXPCommon.h:106
Definition: FEXPCommon.h:112
Definition: FEXPCommon.h:113
static std::string & StrLtrim(std::string &str)
Definition: FEXPCommon.cpp:99
#define FEXPCOMMON_FOREACH_ITER(data)
Definition: FEXPCommon.h:156
#define FEXPCOMMON_COMPARE_2V
Definition: FEXPCommon.h:1095
virtual void SetValue(size_t index, TValue value) override
Definition: FEXPCommon.h:816
static std::enable_if< std::is_floating_point< TValue >::value, int >::type Compare(TValue value1, TValue value2, TValue eps=FEXPCOMMON_DEFAULT_VALUE)
Definition: FEXPCommon.h:1181
static Ptr< TType > SafeAllocInstance(VarArgs &&... inpar)
It allocates data.
Definition: FEXPCommon.h:392
static std::string & StrRtrim(std::string &str)
Definition: FEXPCommon.cpp:109
void SetToNull()
Definition: FEXPCommon.h:295
virtual bool IsBufferReady()=0
EFEXPFiniteElementGeom
Type of FE geometry.
Definition: FEXPCommon.h:90
virtual bool IsBufferReady() override
Definition: FEXPCommon.h:713
std::function< TReturnType(Args...)> f_type
Definition: FEXPCommon.h:257
#define MAP_PAIR(key, itm)
Definition: FEXPCommon.h:471
Ptr< TData > GetData()
Definition: FEXPCommon.h:441
#define FEXPCOMMON_DEFAULT_VALUE
Definition: FEXPCommon.h:179
virtual ~ICFEXPValueConverterBase()
Definition: FEXPCommon.h:1121
Base wrapper for items in container.
Definition: FEXPCommon.h:434
Definition: FEXPCommon.h:86
static void WriteLine()
Definition: FEXPCommon.cpp:154
Definition: FEXPCommon.h:235
Definition: FEXPCommon.h:475
static Ptr< TType > SafeAllocInstanceArray(size_t length)
It allocates data array.
Definition: FEXPCommon.h:410
Smart pointer.
Definition: FEXPCommon.h:274
TValue GetValue(const std::string &text)
Definition: FEXPCommon.h:1138
Definition: FEXPCommon.h:94
std::string GetModulePath()
Definition: FEXPCommon.cpp:166
TValue GetValue(size_t row, size_t col)
Definition: FEXPCommon.h:959
size_t GetArrLength() const
Definition: FEXPCommon.h:296
virtual bool IsBufferReady() override
Definition: FEXPCommon.h:797
CFEXPMatrixBufferStdMap(size_t length, std::function< TValue(size_t)> default_val)
Definition: FEXPCommon.h:809
virtual ~CFEXPMatrix2D()
Definition: FEXPCommon.h:1012
#define FEXPCOMMON_DYNCAST(clsfrom, clsto, variable)
Definition: FEXPCommon.h:138
virtual ~ICFEXPDataWrapperBase()
Definition: FEXPCommon.h:439
Definition: FEXPCommon.h:1134
static std::vector< std::string > SplitString(const std::string &str, const std::string &delim)
Definition: FEXPCommon.cpp:63
CFEXPSafeConcurencyConsolePrint()=default
void TRACE(const char *format,...)
Definition: FEXPCommon.cpp:225
General functions for various conversions.
Definition: FEXPCommon.h:1030